/**
 * Paquete que contiene los objetos.
 */
package co.sumset.objetos;

/**
 * Clase Vigilante, representa a los anticuerpos.
 * 
 * @author Cristian Raul Pineda Rodriguez
 */
public class Vigilante extends Actor{

	protected int vx;//Velocidad en el Eje Y del Escenario
	protected int vy;//Velocidad en el Eje X del Escenario
	Escenario stage;// Escenario
	
	/**
	 * Metodo Constructor. Inicializa los recursos para el Vigilante
	 * 
	 * @param stage
	 */
	public Vigilante(Escenario stage) {
		super(stage);
		this.stage=stage;
		setSpriteNames( new String[] {
				"/juego/vig48d.png",
				"/juego/vig48i.png"});
		setFrameSpeed(45);
	}
	
	/**
	 * Este metodo simula el comportamiento del Vigilante, 
	 * cada que llega al limite del Escenario rebota y sigue buscando Virus.
	 */
	public void act() {
		super.act();
		$varX+=vx;
		$varY+=vy;
		if ($varX < 0 || $varX > Escenario.WIDTH-32){
			vx = -vx;
		}

		if($varY < 0 || $varY > Escenario.HEIGHT-270){
			vy = -vy;
		}
	}
	
	/**
	 * Este metodo permite verificar las collisiones con otros Actores en el 
	 * caso del Vigilante si los Actores son: Virus o Lacer; si estos colisionan con el 
	 * rojo este es removido del escenario y activa la alarma, para que aparezca el Agente.
	 * 
	 * @param a ; Recibe los actores que colisionan en el Escenario con el Vigilante.
	 */
	public void collision(Actor a) {

		if (a instanceof Virus || a instanceof Laser) {
			
			remove();
			stage.getAdministrador().setPeligro(true);
		}

	}

	/**
	 * @return the vx
	 */
	public int getVx() {
		return vx;
	}

	/**
	 * @param vx the vx to set
	 */
	public void setVx(int vx) {
		this.vx = vx;
	}

	/**
	 * @return the vy
	 */
	public int getVy() {
		return vy;
	}

	/**
	 * @param vy the vy to set
	 */
	public void setVy(int vy) {
		this.vy = vy;
	}	
}
